]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
workspacesView: Use calculated workspace state for progress
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>
Fri, 15 Jan 2021 18:58:33 +0000 (15:58 -0300)
committerMarge Bot <marge-bot@gnome.org>
Thu, 11 Feb 2021 15:50:31 +0000 (15:50 +0000)
It works just like before, except that this has the nice side effect
of not changing the workspace mode when leaving the overview from
the app grid state.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1624>

js/ui/workspacesView.js

index 802d15eedf5a142698d122df2410974e9c44dddd..743d997204a1d0f0809d69fa1be48cff50e1ecad 100644 (file)
@@ -233,16 +233,32 @@ class WorkspacesView extends WorkspacesViewBase {
         return Math.clamp(spacing, WORKSPACE_MIN_SPACING, WORKSPACE_MAX_SPACING);
     }
 
-    _updateWorkspacesState() {
+    _getWorkspaceModeForOverviewState(state) {
         const { ControlsState } = OverviewControls;
 
+        switch (state) {
+        case ControlsState.HIDDEN:
+            return 0;
+        case ControlsState.WINDOW_PICKER:
+            return 1;
+        case ControlsState.APP_GRID:
+            return 0;
+        }
+
+        return 0;
+    }
+
+    _updateWorkspacesState() {
         const adj = this._scrollAdjustment;
         const fitMode = this._fitModeAdjustment.value;
-        const overviewState = this._overviewAdjustment.value;
 
-        const normalizedWorkspaceState = 1 -
-            Math.abs(ControlsState.WINDOW_PICKER - overviewState);
-        const workspaceMode = Util.lerp(normalizedWorkspaceState, 0, fitMode);
+        const { initialState, finalState, progress } =
+            this._overviewAdjustment.getStateTransitionParams();
+
+        const workspaceMode = (1 - fitMode) * Util.lerp(
+            this._getWorkspaceModeForOverviewState(initialState),
+            this._getWorkspaceModeForOverviewState(finalState),
+            progress);
 
         // Fade and scale inactive workspaces
         this._workspaces.forEach((w, index) => {
@@ -250,9 +266,9 @@ class WorkspacesView extends WorkspacesViewBase {
 
             const distanceToCurrentWorkspace = Math.abs(adj.value - index);
 
-            const progress = 1 - Math.clamp(distanceToCurrentWorkspace, 0, 1);
+            const scaleProgress = 1 - Math.clamp(distanceToCurrentWorkspace, 0, 1);
 
-            const scale = Util.lerp(WORKSPACE_INACTIVE_SCALE, 1, progress);
+            const scale = Util.lerp(WORKSPACE_INACTIVE_SCALE, 1, scaleProgress);
             w.set_scale(scale, scale);
         });
     }